import request from '@/utils/request'; // 导入封装的 request 工具

/**
 * 处理 JSON-RPC 响应，提取数据或抛出错误
 * @param {Object} response Axios 响应对象
 * @returns {Object} 成功响应的 result 部分
 * @throws {Error} 如果响应包含错误
 */
function handleResponse(response) {
  if (response?.data?.error) {
    console.error("API Error:", response.data.error);
    throw new Error(response.data.error.message || 'API 请求失败');
  }
  // 直接返回 result 部分，让调用方处理具体内容
  if ('result' in response?.data) {
      return response.data.result;
  }
  // 未知错误或非预期格式
  console.error("Unexpected API response format:", response?.data);
  throw new Error('API 响应格式错误或非预期结果');
}

// 获取系统时间
export const getTime = async () => {
  try {
      const response = await request.post('/v1/jsonrpc2/', {
        jsonrpc: '2.0',
        id: 'get_time_' + Date.now(), // 使用时间戳保证 ID 唯一性
        method: 'system.getTime',
        params: {}
      });
      return handleResponse(response); // { time_zone: "...", local_time: "..." }
  } catch (error) {
      console.error("获取系统时间失败:", error);
      throw error instanceof Error ? error : new Error('获取系统时间失败');
  }
};

// 设置系统时间
export const setTime = async (params) => {
  try {
      const response = await request.post('/v1/jsonrpc2/', {
        jsonrpc: '2.0',
        id: 'set_time_' + Date.now(),
        method: 'system.setTime',
        params: params // { time_zone: "Asia/Shanghai", local_time: "YYYY-MM-DDTHH:mm:ss" }
      });
      return handleResponse(response); // { status: "success" }
  } catch (error) {
      console.error("设置系统时间失败:", error);
      throw error instanceof Error ? error : new Error('设置系统时间失败');
  }
};

// 获取 NTP 配置
export const getNTPConfig = async () => {
  try {
      const response = await request.post('/v1/jsonrpc2/', {
        jsonrpc: '2.0',
        id: 'get_ntp_config_' + Date.now(),
        method: 'system.getNTPConfig',
        params: {}
      });
      return handleResponse(response); // { enable: true, servers: [...] }
  } catch (error) {
      console.error("获取 NTP 配置失败:", error);
      throw error instanceof Error ? error : new Error('获取 NTP 配置失败');
  }
};

// 设置 NTP 配置
export const setNTPConfig = async (params) => {
  try {
      const response = await request.post('/v1/jsonrpc2/', {
        jsonrpc: '2.0',
        id: 'set_ntp_config_' + Date.now(),
        method: 'system.setNTPConfig',
        params: params // { enable: true, servers: [...] }
      });
      return handleResponse(response); // { status: "success", requires_reboot: false }
  } catch (error) {
      console.error("设置 NTP 配置失败:", error);
      throw error instanceof Error ? error : new Error('设置 NTP 配置失败');
  }
}; 